import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    // 声明Store对象的变量结构体，与变量初始化
  },
  getters:{
    // 获取Store对象数据
  },
  mutations: {
    // 算是个setter方法，只允许同步操作
    /**
     * 我将mutaions理解为store中的methods, 
     * mutations对象中保存着更改数据的回调函数,该函数名官方规定叫type, 
     * 第一个参数是state, 第二参数是payload, 也就是自定义的参数
     * 注意:调用mutaions中回调函数, 只能使用store.commit(type, payload)
     */
  },
  actions: {
    /**
     *  actions 类似于 mutations，不同在于：
        actions提交的是mutations而不是直接变更状态!!!!
        actions中可以包含异步操作, mutations中绝对不允许出现异步
        actions中的回调函数的第一个参数是context, 是一个与store实例具有相同属性和方法的对象。
     */
  },
  modules: {
    // 支持将多个Store对象聚集为一个模块
  }
});

export default store;
// export default new Vuex.Store({
//   state: {
//     // 存储token
//     Authorization: localStorage.getItem('Authorization') ? localStorage.getItem('Authorization') : ''
//   },
//   mutations: {
//     // 修改token，并将token存入localStorage
//     changeLogin (state, user) {
//       state.Authorization = user.Authorization;
//       localStorage.setItem('Authorization', user.Authorization);
//     }
//   },
//   actions: {
//   },
//   modules: {
//   }
// })
